/*
 * Copyright ©2015-2023 Jaemon. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.cloud.alarm.dinger.constant;

/**
 * 常量类
 *
 * @author shuai.zhou
 * @since 1.0
 */
public interface DingerConstant {

    String DINGER_PREFIX = "D";
    /**
     * 默认线程池中线程名称前缀
     */
    String DEFAULT_THREAD_NAME_PREFIX = "dinger-";

    String NEW_LINE = "\r\n";
    String SPOT_SEPERATOR = ".";

    String DINGER_PROP_PREFIX = "spring.dinger";
    String DINGER_PROPERTIES_PREFIX = DINGER_PROP_PREFIX + SPOT_SEPERATOR;

    String DINGER_COMMA = ",";
    String DINGER_SEPERATOR = "&";
    String DINGER_PHONE_KEY = "@Dinger_Phone_Key@";
    String DINGER_PHONE_TAG = "@Dinger_Phone_Tag@";
    String DINGER_PHONE_FORCE_TAG = "@Dinger_Phone_Force_Tag@";
    String DINGER_AT = "@";
    String HMAC_SHA_256 = "HmacSHA256";

    /**
     * bean name
     */
    interface BeanName {
        // ======================== CustomMessage beanName ==================================
        /**
         * textMessage beanName
         */
        String TEXT_MESSAGE_BEAN_NAME = "textMessage";
        /**
         * markDownMessage beanName
         */
        String MARKDOWN_MESSAGE_BEAN_NAME = "markDownMessage";
        /**
         * interactiveMessage beanName
         */
        String INTERACTIVE_MESSAGE_BEAN_NAME = "interactiveMessage";

        // ======================== DingerSignAlgorithm beanName ==================================
        /**
         * DingTalkSignAlgorithm beanName
         */
        String DINGTALK_SIGN_ALGORITHM_BEAN_NAME = "dingTalkSignAlgorithm";
        /**
         * ByteTalkSignAlgorithm beanName
         */
        String BYTETALK_SIGN_ALGORITHM_BEAN_NAME = "byteTalkSignAlgorithm";

        // ======================== DingerExecutor beanName ==================================
        /**
         * DingerExecutor beanName
         */
        String DINGER_EXECUTOR = "dingerExecutor";

        // ======================== DingerExceptionCallback beanName ==================================
        /**
         * DingerExceptionCallback beanName
         */
        String DINGER_EXCEPTION_CALLBACK_BEAN_NAME = "dingerExceptionCallback";

        // ======================== DingerIdGenerator beanName ==================================
        /**
         * DingerIdGenerator beanName
         */
        String DINGER_ID_GENERATOR_BEAN_NAME = "dingerIdGenerator";

        // ======================== DingerAsyncCallback beanName ==================================
        /**
         * DingerAsyncCallback beanName
         */
        String DINGER_ASYNC_CALLBACK_BEAN_NAME = "dingerAsyncCallback";

        // ======================== DingerRestTemplate beanName ==================================
        /**
         * DingerRestTemplate beanName
         */
        String DINGER_REST_TEMPLATE_BEAN_NAME = "dingerRestTemplate";

        // ======================== DingerHttpClient beanName ==================================
        /**
         * DingerHttpClient beanName
         */
        String DINGER_HTTP_CLIENT_BEAN_NAME = "dingerHttpClient";
    }

}